new function gdk_window_at_pointer() to retrive the current GdkWindow the
authorTim Janik <timj@gtk.org>
Wed, 17 Jun 1998 08:48:22 +0000 (08:48 +0000)
committerTim Janik <timj@src.gnome.org>
Wed, 17 Jun 1998 08:48:22 +0000 (08:48 +0000)
Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>

        * gdk/gdk.h:
        * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
        the current GdkWindow the pointer is on if there is any.

        * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
        and one column, so we don't construction logic at all. changed a few
        (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
        unsigned int wraps.

        * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
        portion, added an additional check for parent != widget.

        * more GtkType and macro fixups.

22 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdk.h
gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c
gtk/gtkbox.c
gtk/gtkbox.h
gtk/gtkhbox.c
gtk/gtkhbox.h
gtk/gtkmisc.c
gtk/gtkmisc.h
gtk/gtkpixmap.c
gtk/gtkpixmap.h
gtk/gtktable.c
gtk/gtkvbox.c
gtk/gtkvbox.h
gtk/gtkwidget.c

index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 79e28b1e87265f53a0b5517a844543bb6458a0a4..cdd2445df88baf9c9cbc0f72bff9d33b9eb8a24b 100644 (file)
@@ -1,3 +1,19 @@
+Wed Jun 17 03:47:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gdk/gdk.h:
+       * gdk/gdkwindow.c: new function gdk_window_at_pointer() to retrive
+       the current GdkWindow the pointer is on if there is any.
+       
+       * gtk/gtktable.c (gtk_table_init): preallocate a table with one row
+       and one column, so we don't construction logic at all. changed a few
+       (x < y - 1) to (x + 1 < y), to avoid failing evaluations due to
+       unsigned int wraps.
+
+       * gtk/gtkwidget.c (gtk_widget_set_parent): removed left over code
+       portion, added an additional check for parent != widget.
+
+       * more GtkType and macro fixups.
+
 1998-06-16  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra
index 3d4d95692474ce0a77882ebb1fe07d96061ecac9..7d1815340c910b1d6c26004e13f1c902a810a85b 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -126,11 +126,13 @@ GdkWindow*    gdk_window_new           (GdkWindow     *parent,
                                      GdkWindowAttr *attributes,
                                      gint           attributes_mask);
 
-GdkWindow *   gdk_window_foreign_new (guint32       anid);
+GdkWindow   gdk_window_foreign_new (guint32       anid);
 void         gdk_window_destroy     (GdkWindow     *window);
 GdkWindow*    gdk_window_ref        (GdkWindow     *window);
 void         gdk_window_unref       (GdkWindow     *window);
 
+GdkWindow*    gdk_window_at_pointer  (gint        *win_x,
+                                     gint         *win_y);
 void         gdk_window_show        (GdkWindow    *window);
 void         gdk_window_hide        (GdkWindow    *window);
 void         gdk_window_withdraw    (GdkWindow    *window);
index 033427d58a6edb3a7d1a4967229ec32fb3d3cd09..46211d1142c7d91e6e9ad882817e29bea3952ffc 100644 (file)
@@ -61,44 +61,56 @@ int event_mask_table[20] =
 
 /* internal function created for and used by gdk_window_xid_at_coords */
 Window
-gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y, 
-                 GList *excludes, gboolean excl_child)
+gdk_window_xid_at (Window   base,
+                  gint     bx,
+                  gint     by,
+                  gint     x,
+                  gint     y, 
+                  GList   *excludes,
+                  gboolean excl_child)
 {
    GdkWindow *window;
    GdkWindowPrivate *private;
    Display *disp;
-   Window *list=NULL;
-   Window child=0,parent_win=0,root_win=0;
-
+   Window *list = NULL;
+   Window child = 0, parent_win = 0, root_win = 0;
    int i;
    unsigned int ww, wh, wb, wd, num;
-   int wx,wy;
+   int wx, wy;
    
-   window=(GdkWindow*)&gdk_root_parent;
-   private=(GdkWindowPrivate*)window;
-   disp=private->xdisplay;
-   if (!XGetGeometry(disp,base,&root_win,&wx,&wy,&ww,&wh,&wb,&wd))
+   window = (GdkWindow*) &gdk_root_parent;
+   private = (GdkWindowPrivate*) window;
+   disp = private->xdisplay;
+   if (!XGetGeometry (disp, base, &root_win, &wx, &wy, &ww, &wh, &wb, &wd))
      return 0;
-   wx+=bx;wy+=by;
-   if (!((x>=wx)&&(y>=wy)&&(x<(int)(wx+ww))&&(y<(int)(wy+wh))))
+   wx += bx;
+   wy += by;
+
+   if (!((x >= wx) &&
+        (y >= wy) &&
+        (x < (int) (wx + ww)) &&
+        (y < (int) (wy + wh))))
      return 0;
-   if (!XQueryTree(disp,base,&root_win,&parent_win,&list,&num))
+
+   if (!XQueryTree (disp, base, &root_win, &parent_win, &list, &num))
      return base;
+
    if (list)
      {
-       for (i=num-1;;i--)
+       for (i = num - 1; ; i--)
          {
-            if ((!excl_child)||(!g_list_find(excludes,(gpointer *)list[i])))
+            if ((!excl_child) || (!g_list_find (excludes, (gpointer *) list[i])))
               {
-                if ((child=gdk_window_xid_at(list[i],wx,wy,x,y,excludes,excl_child))!=0)
+                if ((child = gdk_window_xid_at (list[i], wx, wy, x, y, excludes, excl_child)) != 0)
                   {
-                    XFree(list);
+                    XFree (list);
                     return child;
                   }
               }
-            if (!i) break;
+            if (!i)
+              break;
          }
-       XFree(list);
+       XFree (list);
      }
    return base;
 }
@@ -117,24 +129,31 @@ gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y,
  * those X,Y co-ordinates.
  */
 Window
-gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
+gdk_window_xid_at_coords (gint     x,
+                         gint     y,
+                         GList   *excludes,
+                         gboolean excl_child)
 {
    GdkWindow *window;
    GdkWindowPrivate *private;
    Display *disp;
-   Window *list=NULL;
-   Window root,child=0,parent_win=0,root_win=0;
+   Window *list = NULL;
+   Window root, child = 0, parent_win = 0, root_win = 0;
    unsigned int num;
    int i;
    
-   window=(GdkWindow*)&gdk_root_parent;
-   private=(GdkWindowPrivate*)window;
-   disp=private->xdisplay;
-   root=private->xwindow;
-   XGrabServer(disp);
-   num=g_list_length(excludes);
-   if (!XQueryTree(disp,root,&root_win,&parent_win,&list,&num))
-       return root;
+   window = (GdkWindow*) &gdk_root_parent;
+   private = (GdkWindowPrivate*) window;
+   disp = private->xdisplay;
+   root = private->xwindow;
+   num = g_list_length (excludes);
+
+   XGrabServer (disp);
+   if (!XQueryTree (disp, root, &root_win, &parent_win, &list, &num))
+     {
+       XUngrabServer(disp);
+       return root;
+     }
    if (list)
      {
        i = num - 1;
@@ -147,7 +166,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
           if (xwa.map_state != IsViewable)
             continue;
 
-          if (excl_child && g_list_find(excludes,(gpointer *)list[i]))
+          if (excl_child && g_list_find (excludes, (gpointer *) list[i]))
             continue;
           
           if ((child = gdk_window_xid_at (list[i], 0, 0, x, y, excludes, excl_child)) == 0)
@@ -155,23 +174,23 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
 
           if (excludes)
             {
-              if (!g_list_find(excludes,(gpointer *)child))
+              if (!g_list_find (excludes, (gpointer *) child))
                 {
-                  XFree(list);
-                  XUngrabServer(disp);
+                  XFree (list);
+                  XUngrabServer (disp);
                   return child;
                 }
             }
           else
             {
-              XFree(list);
-              XUngrabServer(disp);
+              XFree (list);
+              XUngrabServer (disp);
               return child;
             }
         } while (--i > 0);
-       XFree(list);
+       XFree (list);
      }
-   XUngrabServer(disp);
+   XUngrabServer (disp);
    return root;
 }
 
@@ -1326,6 +1345,46 @@ gdk_window_get_pointer (GdkWindow       *window,
   return return_val;
 }
 
+GdkWindow*
+gdk_window_at_pointer (gint *win_x,
+                      gint *win_y)
+{
+  GdkWindowPrivate *private;
+  GdkWindow *window;
+  Window root;
+  Window xwindow;
+  Window xwindow_last = 0;
+  int rootx = -1, rooty = -1;
+  int winx, winy;
+  unsigned int xmask;
+
+  private = &gdk_root_parent;
+
+  xwindow = private->xwindow;
+
+  XGrabServer (private->xdisplay);
+  while (xwindow)
+    {
+      xwindow_last = xwindow;
+      XQueryPointer (private->xdisplay,
+                    xwindow,
+                    &root, &xwindow,
+                    &rootx, &rooty,
+                    &winx, &winy,
+                    &xmask);
+    }
+  XUngrabServer (private->xdisplay);
+  
+  window = gdk_window_lookup (xwindow_last);
+
+  if (win_x)
+    *win_x = window ? winx : -1;
+  if (win_y)
+    *win_y = window ? winy : -1;
+
+  return window;
+}
+
 GdkWindow*
 gdk_window_get_parent (GdkWindow *window)
 {
index 033427d58a6edb3a7d1a4967229ec32fb3d3cd09..46211d1142c7d91e6e9ad882817e29bea3952ffc 100644 (file)
@@ -61,44 +61,56 @@ int event_mask_table[20] =
 
 /* internal function created for and used by gdk_window_xid_at_coords */
 Window
-gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y, 
-                 GList *excludes, gboolean excl_child)
+gdk_window_xid_at (Window   base,
+                  gint     bx,
+                  gint     by,
+                  gint     x,
+                  gint     y, 
+                  GList   *excludes,
+                  gboolean excl_child)
 {
    GdkWindow *window;
    GdkWindowPrivate *private;
    Display *disp;
-   Window *list=NULL;
-   Window child=0,parent_win=0,root_win=0;
-
+   Window *list = NULL;
+   Window child = 0, parent_win = 0, root_win = 0;
    int i;
    unsigned int ww, wh, wb, wd, num;
-   int wx,wy;
+   int wx, wy;
    
-   window=(GdkWindow*)&gdk_root_parent;
-   private=(GdkWindowPrivate*)window;
-   disp=private->xdisplay;
-   if (!XGetGeometry(disp,base,&root_win,&wx,&wy,&ww,&wh,&wb,&wd))
+   window = (GdkWindow*) &gdk_root_parent;
+   private = (GdkWindowPrivate*) window;
+   disp = private->xdisplay;
+   if (!XGetGeometry (disp, base, &root_win, &wx, &wy, &ww, &wh, &wb, &wd))
      return 0;
-   wx+=bx;wy+=by;
-   if (!((x>=wx)&&(y>=wy)&&(x<(int)(wx+ww))&&(y<(int)(wy+wh))))
+   wx += bx;
+   wy += by;
+
+   if (!((x >= wx) &&
+        (y >= wy) &&
+        (x < (int) (wx + ww)) &&
+        (y < (int) (wy + wh))))
      return 0;
-   if (!XQueryTree(disp,base,&root_win,&parent_win,&list,&num))
+
+   if (!XQueryTree (disp, base, &root_win, &parent_win, &list, &num))
      return base;
+
    if (list)
      {
-       for (i=num-1;;i--)
+       for (i = num - 1; ; i--)
          {
-            if ((!excl_child)||(!g_list_find(excludes,(gpointer *)list[i])))
+            if ((!excl_child) || (!g_list_find (excludes, (gpointer *) list[i])))
               {
-                if ((child=gdk_window_xid_at(list[i],wx,wy,x,y,excludes,excl_child))!=0)
+                if ((child = gdk_window_xid_at (list[i], wx, wy, x, y, excludes, excl_child)) != 0)
                   {
-                    XFree(list);
+                    XFree (list);
                     return child;
                   }
               }
-            if (!i) break;
+            if (!i)
+              break;
          }
-       XFree(list);
+       XFree (list);
      }
    return base;
 }
@@ -117,24 +129,31 @@ gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y,
  * those X,Y co-ordinates.
  */
 Window
-gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
+gdk_window_xid_at_coords (gint     x,
+                         gint     y,
+                         GList   *excludes,
+                         gboolean excl_child)
 {
    GdkWindow *window;
    GdkWindowPrivate *private;
    Display *disp;
-   Window *list=NULL;
-   Window root,child=0,parent_win=0,root_win=0;
+   Window *list = NULL;
+   Window root, child = 0, parent_win = 0, root_win = 0;
    unsigned int num;
    int i;
    
-   window=(GdkWindow*)&gdk_root_parent;
-   private=(GdkWindowPrivate*)window;
-   disp=private->xdisplay;
-   root=private->xwindow;
-   XGrabServer(disp);
-   num=g_list_length(excludes);
-   if (!XQueryTree(disp,root,&root_win,&parent_win,&list,&num))
-       return root;
+   window = (GdkWindow*) &gdk_root_parent;
+   private = (GdkWindowPrivate*) window;
+   disp = private->xdisplay;
+   root = private->xwindow;
+   num = g_list_length (excludes);
+
+   XGrabServer (disp);
+   if (!XQueryTree (disp, root, &root_win, &parent_win, &list, &num))
+     {
+       XUngrabServer(disp);
+       return root;
+     }
    if (list)
      {
        i = num - 1;
@@ -147,7 +166,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
           if (xwa.map_state != IsViewable)
             continue;
 
-          if (excl_child && g_list_find(excludes,(gpointer *)list[i]))
+          if (excl_child && g_list_find (excludes, (gpointer *) list[i]))
             continue;
           
           if ((child = gdk_window_xid_at (list[i], 0, 0, x, y, excludes, excl_child)) == 0)
@@ -155,23 +174,23 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child)
 
           if (excludes)
             {
-              if (!g_list_find(excludes,(gpointer *)child))
+              if (!g_list_find (excludes, (gpointer *) child))
                 {
-                  XFree(list);
-                  XUngrabServer(disp);
+                  XFree (list);
+                  XUngrabServer (disp);
                   return child;
                 }
             }
           else
             {
-              XFree(list);
-              XUngrabServer(disp);
+              XFree (list);
+              XUngrabServer (disp);
               return child;
             }
         } while (--i > 0);
-       XFree(list);
+       XFree (list);
      }
-   XUngrabServer(disp);
+   XUngrabServer (disp);
    return root;
 }
 
@@ -1326,6 +1345,46 @@ gdk_window_get_pointer (GdkWindow       *window,
   return return_val;
 }
 
+GdkWindow*
+gdk_window_at_pointer (gint *win_x,
+                      gint *win_y)
+{
+  GdkWindowPrivate *private;
+  GdkWindow *window;
+  Window root;
+  Window xwindow;
+  Window xwindow_last = 0;
+  int rootx = -1, rooty = -1;
+  int winx, winy;
+  unsigned int xmask;
+
+  private = &gdk_root_parent;
+
+  xwindow = private->xwindow;
+
+  XGrabServer (private->xdisplay);
+  while (xwindow)
+    {
+      xwindow_last = xwindow;
+      XQueryPointer (private->xdisplay,
+                    xwindow,
+                    &root, &xwindow,
+                    &rootx, &rooty,
+                    &winx, &winy,
+                    &xmask);
+    }
+  XUngrabServer (private->xdisplay);
+  
+  window = gdk_window_lookup (xwindow_last);
+
+  if (win_x)
+    *win_x = window ? winx : -1;
+  if (win_y)
+    *win_y = window ? winy : -1;
+
+  return window;
+}
+
 GdkWindow*
 gdk_window_get_parent (GdkWindow *window)
 {
index 8ed7dc022b6a920774e655cc94d3f1685a19c87e..0804b1d21d76346dc03355890e1ca26411f7775c 100644 (file)
@@ -68,10 +68,10 @@ static GtkType gtk_box_child_type (GtkContainer   *container);
 static GtkContainerClass *parent_class = NULL;
 
 
-guint
+GtkType
 gtk_box_get_type (void)
 {
-  static guint box_type = 0;
+  static GtkType box_type = 0;
 
   if (!box_type)
     {
@@ -86,7 +86,7 @@ gtk_box_get_type (void)
         (GtkArgGetFunc) gtk_box_get_arg,
       };
 
-      box_type = gtk_type_unique (gtk_container_get_type (), &box_info);
+      box_type = gtk_type_unique (GTK_TYPE_CONTAINER, &box_info);
     }
 
   return box_type;
@@ -103,7 +103,7 @@ gtk_box_class_init (GtkBoxClass *class)
   widget_class = (GtkWidgetClass*) class;
   container_class = (GtkContainerClass*) class;
 
-  parent_class = gtk_type_class (gtk_container_get_type ());
+  parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
 
   gtk_object_add_arg_type ("GtkBox::spacing", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_SPACING);
   gtk_object_add_arg_type ("GtkBox::homogeneous", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_HOMOGENEOUS);
index 223207f958d0e74ab6e6f40059bee69d7445b51c..db7a26798db980de72afb08ca617a7b3b194f48c 100644 (file)
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 
 #ifdef __cplusplus
 extern "C" {
+#pragma }
 #endif /* __cplusplus */
 
 
-#define GTK_BOX(obj)          GTK_CHECK_CAST (obj, gtk_box_get_type (), GtkBox)
-#define GTK_BOX_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_box_get_type (), GtkBoxClass)
-#define GTK_IS_BOX(obj)       GTK_CHECK_TYPE (obj, gtk_box_get_type ())
+#define GTK_TYPE_BOX                 (gtk_box_get_type ())
+#define GTK_BOX(obj)                 (GTK_CHECK_CAST ((obj), GTK_TYPE_BOX, GtkBox))
+#define GTK_BOX_CLASS(klass)         (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_BOX, GtkBoxClass))
+#define GTK_IS_BOX(obj)                      (GTK_CHECK_TYPE ((obj), GTK_TYPE_BOX))
+#define GTK_IS_BOX_CLASS(klass)              (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_BOX))
 
 
-typedef struct _GtkBox        GtkBox;
+typedef struct _GtkBox       GtkBox;
 typedef struct _GtkBoxClass   GtkBoxClass;
 typedef struct _GtkBoxChild   GtkBoxChild;
 
 struct _GtkBox
 {
   GtkContainer container;
-
+  
   GList *children;
   gint16 spacing;
   guint homogeneous : 1;
@@ -62,39 +65,39 @@ struct _GtkBoxChild
 };
 
 
-guint      gtk_box_get_type            (void);
-void       gtk_box_pack_start          (GtkBox       *box,
+GtkType           gtk_box_get_type            (void);
+void      gtk_box_pack_start          (GtkBox       *box,
                                        GtkWidget    *child,
                                        gboolean      expand,
                                        gboolean      fill,
-                                       guint         padding);
-void       gtk_box_pack_end            (GtkBox       *box,
+                                       guint         padding);
+void      gtk_box_pack_end            (GtkBox       *box,
                                        GtkWidget    *child,
                                        gboolean      expand,
                                        gboolean      fill,
-                                       guint         padding);
-void       gtk_box_pack_start_defaults (GtkBox       *box,
+                                       guint         padding);
+void      gtk_box_pack_start_defaults (GtkBox       *box,
                                        GtkWidget    *widget);
-void       gtk_box_pack_end_defaults   (GtkBox       *box,
+void      gtk_box_pack_end_defaults   (GtkBox       *box,
                                        GtkWidget    *widget);
-void       gtk_box_set_homogeneous     (GtkBox       *box,
+void      gtk_box_set_homogeneous     (GtkBox       *box,
                                        gboolean      homogeneous);
-void       gtk_box_set_spacing         (GtkBox       *box,
-                                       gint          spacing);
-void      gtk_box_reorder_child       (GtkBox       *box,
+void      gtk_box_set_spacing         (GtkBox       *box,
+                                       gint          spacing);
+void      gtk_box_reorder_child       (GtkBox       *box,
                                        GtkWidget    *child,
-                                       gint          position);
-void       gtk_box_query_child_packing (GtkBox       *box,
+                                       gint          position);
+void      gtk_box_query_child_packing (GtkBox       *box,
                                        GtkWidget    *child,
                                        gboolean     *expand,
                                        gboolean     *fill,
-                                       guint        *padding,
+                                       guint        *padding,
                                        GtkPackType  *pack_type);
-void       gtk_box_set_child_packing   (GtkBox       *box,
+void      gtk_box_set_child_packing   (GtkBox       *box,
                                        GtkWidget    *child,
                                        gboolean      expand,
                                        gboolean      fill,
-                                       guint         padding,
+                                       guint         padding,
                                        GtkPackType   pack_type);
 
 
index 98a4843b03bb5cdc6fd89b2349033391f7288ab2..9b36dc7e1b19a5b26506f6f07b6920d2f972e334 100644 (file)
@@ -27,10 +27,10 @@ static void gtk_hbox_size_allocate (GtkWidget      *widget,
                                    GtkAllocation  *allocation);
 
 
-guint
+GtkType
 gtk_hbox_get_type (void)
 {
-  static guint hbox_type = 0;
+  static GtkType hbox_type = 0;
 
   if (!hbox_type)
     {
@@ -45,7 +45,7 @@ gtk_hbox_get_type (void)
         (GtkArgGetFunc) NULL,
       };
 
-      hbox_type = gtk_type_unique (gtk_box_get_type (), &hbox_info);
+      hbox_type = gtk_type_unique (GTK_TYPE_BOX, &hbox_info);
     }
 
   return hbox_type;
index 7d0dd95c1e2e7a0128a09221b5cbddc95875bdb7..1bf5cb088ca29ed37c8769056ae403746ec151c3 100644 (file)
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 
 #ifdef __cplusplus
 extern "C" {
+#pragma }
 #endif /* __cplusplus */
 
 
-#define GTK_HBOX(obj)          GTK_CHECK_CAST (obj, gtk_hbox_get_type (), GtkHBox)
-#define GTK_HBOX_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_hbox_get_type (), GtkHBoxClass)
-#define GTK_IS_HBOX(obj)       GTK_CHECK_TYPE (obj, gtk_hbox_get_type ())
+#define GTK_TYPE_HBOX                 (gtk_hbox_get_type ())
+#define GTK_HBOX(obj)                 (GTK_CHECK_CAST ((obj), GTK_TYPE_HBOX, GtkHBox))
+#define GTK_HBOX_CLASS(klass)         (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_HBOX, GtkHBoxClass))
+#define GTK_IS_HBOX(obj)              (GTK_CHECK_TYPE ((obj), GTK_TYPE_HBOX))
+#define GTK_IS_HBOX_CLASS(klass)       (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_HBOX))
 
 
-typedef struct _GtkHBox       GtkHBox;
+typedef struct _GtkHBox              GtkHBox;
 typedef struct _GtkHBoxClass  GtkHBoxClass;
 
 struct _GtkHBox
@@ -48,8 +51,8 @@ struct _GtkHBoxClass
 };
 
 
-guint      gtk_hbox_get_type (void);
-GtkWidget* gtk_hbox_new      (gint homogeneous,
+GtkType           gtk_hbox_get_type (void);
+GtkWidget* gtk_hbox_new             (gint homogeneous,
                              gint spacing);
 
 
index 4c773b977398a51690c44d8d87064f0bc9f8baf8..bfe4d2fdcc7b6b0695e30d4e9c7e26b85da0aa18 100644 (file)
@@ -39,10 +39,10 @@ static void gtk_misc_get_arg    (GtkMisc      *misc,
                                 guint         arg_id);
 
 
-guint
+GtkType
 gtk_misc_get_type (void)
 {
-  static guint misc_type = 0;
+  static GtkType misc_type = 0;
 
   if (!misc_type)
     {
@@ -57,7 +57,7 @@ gtk_misc_get_type (void)
         (GtkArgGetFunc) gtk_misc_get_arg,
       };
 
-      misc_type = gtk_type_unique (gtk_widget_get_type (), &misc_info);
+      misc_type = gtk_type_unique (GTK_TYPE_WIDGET, &misc_info);
     }
 
   return misc_type;
index bcb28d61b436ac4896f1cc71677a0e33f0fa1389..0e1de8e6eb739ed497a8f45707127c93394cd50f 100644 (file)
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 
 #ifdef __cplusplus
 extern "C" {
+#pragma }
 #endif /* __cplusplus */
 
 
-#define GTK_MISC(obj)          GTK_CHECK_CAST (obj, gtk_misc_get_type (), GtkMisc)
-#define GTK_MISC_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_misc_get_type (), GtkMiscClass)
-#define GTK_IS_MISC(obj)       GTK_CHECK_TYPE (obj, gtk_misc_get_type ())
+#define GTK_TYPE_MISC                 (gtk_misc_get_type ())
+#define GTK_MISC(obj)                 (GTK_CHECK_CAST ((obj), GTK_TYPE_MISC, GtkMisc))
+#define GTK_MISC_CLASS(klass)         (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_MISC, GtkMiscClass))
+#define GTK_IS_MISC(obj)              (GTK_CHECK_TYPE ((obj), GTK_TYPE_MISC))
+#define GTK_IS_MISC_CLASS(klass)       (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MISC))
 
 
-typedef struct _GtkMisc       GtkMisc;
+typedef struct _GtkMisc              GtkMisc;
 typedef struct _GtkMiscClass  GtkMiscClass;
 
 struct _GtkMisc
 {
   GtkWidget widget;
-
+  
   gfloat xalign;
   gfloat yalign;
-
+  
   guint16 xpad;
   guint16 ypad;
 };
@@ -54,13 +57,13 @@ struct _GtkMiscClass
 };
 
 
-guint  gtk_misc_get_type      (void);
-void   gtk_misc_set_alignment (GtkMisc *misc,
-                              gfloat   xalign,
-                              gfloat   yalign);
-void   gtk_misc_set_padding   (GtkMisc *misc,
-                              gint     xpad,
-                              gint     ypad);
+GtkType gtk_misc_get_type      (void);
+void   gtk_misc_set_alignment (GtkMisc *misc,
+                               gfloat   xalign,
+                               gfloat   yalign);
+void   gtk_misc_set_padding   (GtkMisc *misc,
+                               gint     xpad,
+                               gint     ypad);
 
 
 #ifdef __cplusplus
@@ -68,4 +71,4 @@ void   gtk_misc_set_padding   (GtkMisc *misc,
 #endif /* __cplusplus */
 
 
-#endif /* __GTK_LABEL_H__ */
+#endif /* __GTK_MISC_H__ */
index 06e9aa73122cedb9c65eb601d589b6d87ec53a25..eec55f0bf0c3f92e9b133bd55c51593fa29b7db0 100644 (file)
@@ -28,10 +28,10 @@ static void gtk_pixmap_finalize   (GtkObject       *object);
 
 static GtkWidgetClass *parent_class;
 
-guint
+GtkType
 gtk_pixmap_get_type (void)
 {
-  static guint pixmap_type = 0;
+  static GtkType pixmap_type = 0;
 
   if (!pixmap_type)
     {
@@ -46,7 +46,7 @@ gtk_pixmap_get_type (void)
         (GtkArgGetFunc) NULL,
       };
 
-      pixmap_type = gtk_type_unique (gtk_misc_get_type (), &pixmap_info);
+      pixmap_type = gtk_type_unique (GTK_TYPE_MISC, &pixmap_info);
     }
 
   return pixmap_type;
index 9a7d5ad6ac3843abf7f9e2a683bf23de3b580def..fbcc74c6f08b2bdf1a1af1a7fc812c6a3530b268 100644 (file)
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 
 #ifdef __cplusplus
 extern "C" {
+#pragma }
 #endif /* __cplusplus */
 
 
-#define GTK_PIXMAP(obj)          GTK_CHECK_CAST (obj, gtk_pixmap_get_type (), GtkPixmap)
-#define GTK_PIXMAP_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_pixmap_get_type (), GtkPixmapClass)
-#define GTK_IS_PIXMAP(obj)       GTK_CHECK_TYPE (obj, gtk_pixmap_get_type ())
+#define GTK_TYPE_PIXMAP                         (gtk_pixmap_get_type ())
+#define GTK_PIXMAP(obj)                         (GTK_CHECK_CAST ((obj), GTK_TYPE_PIXMAP, GtkPixmap))
+#define GTK_PIXMAP_CLASS(klass)                 (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_PIXMAP, GtkPixmapClass))
+#define GTK_IS_PIXMAP(obj)              (GTK_CHECK_TYPE ((obj), GTK_TYPE_PIXMAP))
+#define GTK_IS_PIXMAP_CLASS(klass)      (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PIXMAP))
 
 
-typedef struct _GtkPixmap       GtkPixmap;
-typedef struct _GtkPixmapClass  GtkPixmapClass;
+typedef struct _GtkPixmap      GtkPixmap;
+typedef struct _GtkPixmapClass GtkPixmapClass;
 
 struct _GtkPixmap
 {
   GtkMisc misc;
-
+  
   GdkPixmap *pixmap;
   GdkBitmap *mask;
 };
@@ -51,13 +54,13 @@ struct _GtkPixmapClass
 };
 
 
-guint      gtk_pixmap_get_type   (void);
-GtkWidget* gtk_pixmap_new        (GdkPixmap  *pixmap,
+GtkType           gtk_pixmap_get_type   (void);
+GtkWidget* gtk_pixmap_new       (GdkPixmap  *pixmap,
                                  GdkBitmap  *mask);
-void       gtk_pixmap_set        (GtkPixmap  *pixmap,
+void      gtk_pixmap_set        (GtkPixmap  *pixmap,
                                  GdkPixmap  *val,
                                  GdkBitmap  *mask);
-void       gtk_pixmap_get        (GtkPixmap  *pixmap,
+void      gtk_pixmap_get        (GtkPixmap  *pixmap,
                                  GdkPixmap **val,
                                  GdkBitmap **mask);
 
index d3b3e36538500f30d4e78fd89d8661aefeeee52e..a62dc593853af9c9b1b1d6677b2f3b22c89f0232 100644 (file)
@@ -367,6 +367,8 @@ gtk_table_init (GtkTable *table)
   table->column_spacing = 0;
   table->row_spacing = 0;
   table->homogeneous = FALSE;
+
+  gtk_table_resize (table, 1, 1);
 }
 
 GtkWidget*
@@ -544,8 +546,7 @@ gtk_table_set_row_spacing (GtkTable *table,
 {
   g_return_if_fail (table != NULL);
   g_return_if_fail (GTK_IS_TABLE (table));
-  /* g_return_if_fail ((row >= 0) && (row < (table->nrows - 1))); */
-  g_return_if_fail (row < table->nrows - 1);
+  g_return_if_fail (row + 1 < table->nrows);
   
   if (table->rows[row].spacing != spacing)
     {
@@ -563,8 +564,7 @@ gtk_table_set_col_spacing (GtkTable *table,
 {
   g_return_if_fail (table != NULL);
   g_return_if_fail (GTK_IS_TABLE (table));
-  /* g_return_if_fail ((column >= 0) && (column < (table->ncols - 1))); */
-  g_return_if_fail (column < table->ncols - 1);
+  g_return_if_fail (column + 1 < table->ncols);
   
   if (table->cols[column].spacing != spacing)
     {
@@ -585,7 +585,7 @@ gtk_table_set_row_spacings (GtkTable *table,
   g_return_if_fail (GTK_IS_TABLE (table));
   
   table->row_spacing = spacing;
-  for (row = 0; row < table->nrows - 1; row++)
+  for (row = 0; row + 1 < table->nrows; row++)
     table->rows[row].spacing = spacing;
   
   if (GTK_WIDGET_VISIBLE (table))
@@ -602,7 +602,7 @@ gtk_table_set_col_spacings (GtkTable *table,
   g_return_if_fail (GTK_IS_TABLE (table));
   
   table->column_spacing = spacing;
-  for (col = 0; col < table->ncols - 1; col++)
+  for (col = 0; col + 1 < table->ncols; col++)
     table->cols[col].spacing = spacing;
   
   if (GTK_WIDGET_VISIBLE (table))
@@ -777,12 +777,12 @@ gtk_table_size_request (GtkWidget      *widget,
   
   for (col = 0; col < table->ncols; col++)
     requisition->width += table->cols[col].requisition;
-  for (col = 0; col < table->ncols - 1; col++)
+  for (col = 0; col + 1 < table->ncols; col++)
     requisition->width += table->cols[col].spacing;
   
   for (row = 0; row < table->nrows; row++)
     requisition->height += table->rows[row].requisition;
-  for (row = 0; row < table->nrows - 1; row++)
+  for (row = 0; row + 1 < table->nrows; row++)
     requisition->height += table->rows[row].spacing;
   
   requisition->width += GTK_CONTAINER (table)->border_width * 2;
@@ -1244,7 +1244,7 @@ gtk_table_size_allocate_pass1 (GtkTable *table)
        {
          width = real_width;
          
-         for (col = 0; col < table->ncols - 1; col++)
+         for (col = 0; col + 1 < table->ncols; col++)
            width -= table->cols[col].spacing;
          
          for (col = 0; col < table->ncols; col++)
@@ -1269,7 +1269,7 @@ gtk_table_size_allocate_pass1 (GtkTable *table)
          if (table->cols[col].shrink)
            nshrink += 1;
        }
-      for (col = 0; col < table->ncols - 1; col++)
+      for (col = 0; col + 1 < table->ncols; col++)
        width += table->cols[col].spacing;
       
       /* Check to see if we were allocated more width than we requested.
@@ -1321,7 +1321,7 @@ gtk_table_size_allocate_pass1 (GtkTable *table)
        {
          height = real_height;
          
-         for (row = 0; row < table->nrows - 1; row++)
+         for (row = 0; row + 1 < table->nrows; row++)
            height -= table->rows[row].spacing;
          
          
@@ -1347,7 +1347,7 @@ gtk_table_size_allocate_pass1 (GtkTable *table)
          if (table->rows[row].shrink)
            nshrink += 1;
        }
-      for (row = 0; row < table->nrows - 1; row++)
+      for (row = 0; row + 1 < table->nrows; row++)
        height += table->rows[row].spacing;
       
       /* Check to see if we were allocated more height than we requested.
index 4e9cc7921dff5485bc5b32cd7f496f2bd90b14c9..b819700af4896de0b753284a7dad8d5e2f58c599 100644 (file)
@@ -27,10 +27,10 @@ static void gtk_vbox_size_allocate (GtkWidget      *widget,
                                    GtkAllocation  *allocation);
 
 
-guint
+GtkType
 gtk_vbox_get_type (void)
 {
-  static guint vbox_type = 0;
+  static GtkType vbox_type = 0;
 
   if (!vbox_type)
     {
@@ -45,7 +45,7 @@ gtk_vbox_get_type (void)
         (GtkArgGetFunc) NULL,
       };
 
-      vbox_type = gtk_type_unique (gtk_box_get_type (), &vbox_info);
+      vbox_type = gtk_type_unique (GTK_TYPE_BOX, &vbox_info);
     }
 
   return vbox_type;
index dc9213639b6ab61533871616a5cbef80dd79436f..bf727195942e6cfc567b7373044a6f05e9f242cc 100644 (file)
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 
 #ifdef __cplusplus
 extern "C" {
+#pragma }
 #endif /* __cplusplus */
 
 
-#define GTK_VBOX(obj)          GTK_CHECK_CAST (obj, gtk_vbox_get_type (), GtkVBox)
-#define GTK_VBOX_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_vbox_get_type (), GtkVBoxClass)
-#define GTK_IS_VBOX(obj)       GTK_CHECK_TYPE (obj, gtk_vbox_get_type ())
+#define GTK_TYPE_VBOX                 (gtk_vbox_get_type ())
+#define GTK_VBOX(obj)                 (GTK_CHECK_CAST ((obj), GTK_TYPE_VBOX, GtkVBox))
+#define GTK_VBOX_CLASS(klass)         (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_VBOX, GtkVBoxClass))
+#define GTK_IS_VBOX(obj)              (GTK_CHECK_TYPE ((obj), GTK_TYPE_VBOX))
+#define GTK_IS_VBOX_CLASS(klass)       (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_VBOX))
 
 
-typedef struct _GtkVBox       GtkVBox;
+typedef struct _GtkVBox              GtkVBox;
 typedef struct _GtkVBoxClass  GtkVBoxClass;
 
 struct _GtkVBox
@@ -48,8 +51,8 @@ struct _GtkVBoxClass
 };
 
 
-guint      gtk_vbox_get_type (void);
-GtkWidget* gtk_vbox_new      (gint homogeneous,
+GtkType           gtk_vbox_get_type (void);
+GtkWidget* gtk_vbox_new             (gint homogeneous,
                              gint spacing);
 
 
index 0737c20677f5ff34ba98def423cf0144eff71396..d428ce96ee7213de6f192a034705784289ce89f5 100644 (file)
@@ -2532,6 +2532,7 @@ gtk_widget_set_parent (GtkWidget *widget,
   g_return_if_fail (widget->parent == NULL);
   g_return_if_fail (!GTK_WIDGET_TOPLEVEL (widget));
   g_return_if_fail (parent != NULL);
+  g_return_if_fail (widget != parent);
 
   /* keep this function in sync with gtk_menu_attach_to_widget()
    */
@@ -2549,9 +2550,6 @@ gtk_widget_set_parent (GtkWidget *widget,
 
   gtk_widget_propagate_state (widget, &data);
   
-  while (parent->parent != NULL)
-    parent = parent->parent;
-  
   gtk_widget_set_style_recurse (widget, NULL);
 
   gtk_signal_emit (GTK_OBJECT (widget), widget_signals[PARENT_SET], NULL);